iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0
DevOps

一步步學DevOps:30天入門計劃系列 第 8

Day 08 Linux I/O訊息重定向

  • 分享至 

  • xImage
  •  

在Linux中所謂的標準輸入(stdin 代碼為 0)是指使用者透過鍵盤輸入命令至電腦上,這些輸入命令經過執行後會將結果顯示在螢幕的終端機上,如果執行結果正常的話,稱為標準輸出(stdout代碼為1)。如果執行結果發生錯誤,錯誤訊息會被送到標準錯誤輸出,稱為標準錯誤(stderr代碼為2)。

而所謂的重定向即是透過 >、>>、< 重定向符號和代碼數字,更改預設行為(所謂預設行為是指使用鍵盤和螢幕作為輸入與輸出介面),將電腦處理執行後的輸出重新導向至檔案或文件內,或是將檔案內容作為輸入的來源。透過重定向可以將輸入改為從檔案讀取,將輸出重定向到檔案中,或者將錯誤訊息捨棄不顯示在螢幕上。

以下是重定向的詳細說明和使用範例介紹

• 標準輸入(stdin,standard input,channel/stream 0):這是從鍵盤讀取數據的輸入流。
• 標準輸出(stdout,standard output,channel/stream 1):這是向螢幕輸出數據的輸出流。
• 標準錯誤(stderr,standard error output,channel/stream 2):這是向螢幕輸出錯誤訊息的輸出流。

https://ithelp.ithome.com.tw/upload/images/20230922/20139800XKRKvMSGcl.jpg

重定向操作符號說明:

>:將標準輸出重定向到文件,將指令執行結果輸出至文件。

   Command1 > output.txt

將 command1的指令執行結果輸出寫入到output.txt文件中,如果文件不存在則新建,如果存在則覆蓋。

>>:將標準輸出結果附加到文件中,把程式的輸出放在原本的檔案內容之後,不覆蓋原有資料。

  command1 >> output.txt

將 command1的指令執行結果輸出增加到output.txt文件的檔案內容之後,不覆蓋原有資料。

<:將文件作為標準輸入,將指定的檔案設定為程式的標準輸入,從檔案中讀取資料。

 command2 < input.txt

將 input.txt文件的內容作為command2的輸入,取得 input.txt 檔案中的資料,並且顯示在螢幕。

2>:將標準錯誤重定向到文件

command 2> error.txt

將 command的錯誤消息寫入error.txt文件。

2>>:將標準錯誤附加到文件

command 2>> error.txt

將 command的錯誤訊息增加到error.txt文件的檔案內容之後,不覆蓋原有資料。

2>&1:將標準錯誤輸出(stderr,編號 2)重定向到與標準輸出(stdout,編號 1),將錯誤訊息一併輸出到與正常訊息相同的位置,將一個命令的正常輸出和錯誤輸出都保存到一個文件中,便於處理資料內容。

command > output.log 2>&1

將標準輸出和標準錯誤輸出都寫入到名為 output.log 的文件中。

範例用法:

  • 將ls命令的輸出列表儲存到filelist.txt文件中。
ls > filelist.txt
  • 用文件作為命令的輸入,將fileinput.txt文件的內容輸入到cat命令中,然後顯示在屏幕上。
cat < fileinput.txt
  • 錯誤重定向,將command的錯誤輸出重定向到error.txt文件中,這樣可以在文件中檢查錯誤消息。
command 2> error.txt
  • 將標準錯誤重定向到與標準輸出相同的地方:
mycommand > output.txt 2>&1

上述命令將mycommand標準錯誤(2)重定向到與標準輸出(1)相同的地方 output.txt 文件。這樣可以在 output.txt 文件中找到 mycommand 的正常輸出和錯誤消息,可將錯誤消息與正常輸出合併處理或記錄。


上一篇
Day 07 Linux的檔案權限
下一篇
Day 09 Linux管道 (pipe)介紹
系列文
一步步學DevOps:30天入門計劃30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言